package com.dothcya.novel9.core.common.resp;

import lombok.Getter;

import java.util.List;

/**
 * 包名称： com.dothcya.novel9.core.common.resp
 * 类名称：PageRespDto
 * 类描述：分页响应数据格式封装
 * 创建人：@author Dothcya
 * 创建时间：2025-10-27 19:28
 */
@Getter
public class PageRespDto<T> {
    //    响应页码
    private final long pageNum;
    //    每页条数
    private final long pageSize;
    //    总响应条数
    private final long total;
    //    分页数据集
    private final List<? extends T> list;

    //    构造分页数据
    public PageRespDto(long pageNum, long pageSize, long total, List<T> list) {
        this.pageNum = pageNum;
        this.pageSize = pageSize;
        this.total = total;
        this.list = list;
    }

    //    构造分页集合数据
    public static <T> PageRespDto<T> of(long pageNum, long pageSize, long total, List<T> list) {
        return new PageRespDto<>(pageNum, pageSize, total, list);
    }

    //    获取分页数
    public long getPages() {
        if (this.pageSize == 0l) {
            return 0l;
        } else {
            long pages = this.total / this.pageSize;
            if (this.total % this.pageSize != 0) {
                ++pages;
            }
            return pages;
        }
    }
}
